package com.qs.service;

import com.qs.pojo.dto.GoodsInfoDto;
import com.qs.pojo.dto.StoreDto;
import com.qs.pojo.entity.Store;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.pojo.vo.StoreVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 商家表 服务类
 * </p>
 *
 * @author author
 * @since 2023-11-12
 */
public interface IStoreService extends IService<Store> {

    /**
     * 获取后台店铺管理分页数据
     * @param pageNo
     * @param pageSize
     * @param
     * @return
     */
    Map<String, Object> getList(Integer pageNo, Integer pageSize, StoreVo storeVo);

    /**
     * 商户数据回显
     * @param
     * @param
     * @param
     * @return
     */
    StoreDto echo(Integer id);

    /**
     * 修改商户
     * @param
     * @param
     * @param
     * @return
     */
    void updateByKey(StoreDto storeDto);

    /**
     * 新增店铺
     * @param store
     * @return
     */
    void saveStore(Store store);

    /**
     * 前台获取商户数据
     * @param userId
     * @param
     * @return
     */
    List<StoreDto> getFrontList(Integer userId);

    /**
     * 获取前台商户信息及商品分页数据
     * @param pageNo
     * @param pageSize
     * @param
     * @return
     */
    Map<String, Object> getStoresInfo(Integer pageNo, Integer pageSize, Integer storeId);

    /**
     * 获取后台商户审核分页数据
     * @param pageNo
     * @param pageSize
     * @param
     * @return
     */
    Map<String, Object> getStoreCheckList(Integer pageNo, Integer pageSize, StoreVo storeVo);

    /**
     * 获取审核未通过和审核中的店铺数
     * @return
     */
    Long getStoreCounts();

    /**
     * 商户获取审核已通过的未读通知数
     * @return
     */
    Map<String,Object> getStoreIsReadCounts(Integer userId);

    /**
     * 商户已读全部通知接口
     * @return
     */
    void allRead(Integer userId);

    /**
     * 删除商户
     * @param
     * @param
     * @param
     * @return
     */
    void delete(List<Integer> ids,Integer userId);

    /**
     * 前台店铺搜索结果返回接口
     * @param
     * @param
     * @param
     * @return
     */
    Map<String, Object> searchStoreFrontList(Integer pageNo, Integer pageSize, List<Integer> ids, String msg);

    /**
     * 管理员审核通过店铺接口
     * @param
     * @param
     * @param
     * @return
     */
    void checkStorePass(StoreDto storeDto);

    /**
     * 获取前台店铺推荐商品
     * @param storeId
     * @return
     */
    List<GoodsInfoDto> searchRecommendGoods(Integer storeId);

    /**
     * 获取店铺数量
     * @return
     */
    Map<String, Object> findStoreNum();

    /**
     * 商户商品订单统计
     * @return
     */
    Map<String, Object> findGoodsTotal(Integer userId);

    /**
     * 获取流水统计
     * @param userId
     * @return
     */
    Map<String, Object> findTotalPrice(Integer userId);

    /**
     * 获取销量统计
     * @param userId
     * @return
     */
    Map<String, Object> findPineLineToal(Integer userId);

    /**
     * 查询最近7天收益数据(商户)
     * @return
     */
    List<Float> findBusinessWeekdayData(Integer userId);

    /**
     * 获取前台周边店铺
     * @param pageNo
     * @param pageSize
     * @return
     */
    Map<String, Object> getPerimeterList(Integer pageNo, Integer pageSize);
}
